前言 關系型數據庫發展至今,細節上以做足文章,在尋求自身突破發展的過程中,內存與分布式數據庫是當下最流行的主題,這與性能及擴展性在大數據時代的需求交相輝映.SQL Server作為傳統的數據庫也在最 ...
前言 關系型數據庫發展至今,細節上以做足文章,在尋求自身突破發展的過程中,內存與分布式數據庫是當下最流行的主題,這與性能及擴展性在大數據時代的需求交相輝映.SQL Server作為傳統的數據庫也在最 ...
關於亂序 說到內存模型,首先需要明確一個普遍存在,但卻未必人人都注意到的事實:程序通常並不是總按着照源碼中的順序一一執行,此謂之亂序,亂序產生的原因可能有好幾種: 編譯器出於優化的目的,在編 ...
生產者消費者問題,是永遠的經典. 單純讓多個線程去競爭,占有資源然后處理,會讓系統的復雜度變得相當復雜,並且整個系統的並發也很難控制.為了讓系統簡單化,流暢化,引入消息隊列,而且這樣,系統更 ...
怎樣實現一個無鎖隊列,網絡上有很多的介紹,其中流傳最廣,影響最大的恐怕就屬於以下兩篇論文: a) "Implementing lock free queue" by John.D.Valois ...
可見性與亂序 在說到內存模型相關的東西時,我們常常會說到兩個名詞:亂序與可見性,且兩者經常交錯着使用,容易給人錯覺仿佛是兩個不同的東西,其實不是這樣,他們只是從不同的角度來描述一個事情,本質是相同的 ...
現在我們來嘗試解決前一篇文章提到的問題。 (一) 首先是內存釋放的問題。 這個問題乍看起來很棘手:我們現在要訪問一段內存,但卻不知道這段內存是否還合法,是否已被釋放。怎么辦呢?很直接的一個想法是 ...
為了實現一個快速無鎖的 logging 模塊, 這幾天花了不少時間去了解怎樣實現一些無鎖的操作及與之相對應的數據結構。對多線程場景下的無鎖操作的研究一直是個熱點,理想中的無鎖操作,它應能天然地避開有鎖 ...
兩年多以前隨手寫了點與 lock free 相關的筆記:1,2,3,4,質量都不是很高其實(讀者見諒),但兩年來陸陸續續竟也有些閱讀量了(可見劍走偏鋒的技巧是多容易吸引眼球)。筆記當中在解決內存釋放和 ...
書續上回:實現無鎖棧與隊列(1) 對於下面這個看起來很美好的無鎖棧: 我們仔細看一下它的 Push 操作,cas 保證了對 top 的更新是安全,原子的,但是數據的更新呢?這里把 ...